<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基本数据和引用数据</title>
</head>

<body>
    <h3>基本数据类型和引用数据类型有什么区别</h3>
    <ul>
        <li><b>基本数据类型：保存到栈内存，保存一个值</b></li>
        <li>String</li>
        <li>Number</li>
        <li>Boolean</li>
        <li>undefined</li>
        <li>null</li>
    </ul>

    <ul>
        <li><b>引用数据类型：保存在堆内存</b></li>
        <li>Object</li>
        <li>function</li>
        <li>Array</li>
    </ul>

    <script>
        // b 变量下是新声明存储在栈的基本类型值，并不会影响到原来的 a 
        var a = 20 
        var b = a
        b = 30
        console.log(a, b);

        // 堆内存的赋值修改会指向同一个地址（值）
        var oldObj = {
            name: 'lee',
            age: 29,
        }
        var newObj = oldObj
        newObj.name = 'tom'
        oldObj.age = 26
        console.log('不管修改谁，两个值都会变', oldObj, newObj);
    </script>
</body>

</html>